#include "./beep/bsp_beep.h"
#include "./SysTick/bsp_SysTick.h"

int melody[] = {50, 50, 50, 50, 200, 200, 200, 400, 400, 500, 500, 500};

/**
  * @brief  初始化控制蜂鸣器的IO
  * @param  无
  * @retval 无
  */
void BEEP_GPIO_Config(void)
{
        /*定义一个GPIO_InitTypeDef类型的结构体*/
        GPIO_InitTypeDef GPIO_InitStructure;

        /*开启控制蜂鸣器的GPIO的端口时钟*/
        RCC_APB2PeriphClockCmd(BEEP_GPIO_CLK, ENABLE);

        /*选择要控制蜂鸣器的GPIO*/
        GPIO_InitStructure.GPIO_Pin = BEEP_GPIO_PIN;

        /*设置GPIO模式为通用推挽输出*/
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

        /*设置GPIO速率为50MHz */
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        /*调用库函数，初始化控制蜂鸣器的GPIO*/
        GPIO_Init(BEEP_GPIO_PORT, &GPIO_InitStructure);

        /* 关闭蜂鸣器*/
        GPIO_ResetBits(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
}

void Sound(int16_t frq)

{
        int32_t n;

        if (frq != 1000) //如果频率不为1000则按频率输出，否则只延时

        {
                n = 500000 / ((int32_t)frq);

                BEEP(BEEP_OFF);

                SysTick_Delay_Us(n);

                BEEP(BEEP_ON);

                SysTick_Delay_Us(n);
        }
        else

                SysTick_Delay_Us(1000);
}

void play(int song_num)

{
        //             低7  1   2   3   4   5   6   7  高1 高2 高3 高4 高5 不发音
				
	
	      if(song_num == 1)
				{
					int16_t tone[] = {247, 262, 294, 330, 349, 392, 440, 494, 523, 587, 659, 698, 784, 1000}; //音频数据表


					//红尘情歌

					int8_t music[] = {5, 5, 6, 8, 7, 6, 5, 6, 13, 13, //音调

														5, 5, 6, 8, 7, 6, 5, 3, 13, 13,

														2, 2, 3, 5, 3, 5, 6, 3, 2, 1,

														6, 6, 5, 6, 5, 3, 6, 5, 13, 13,

														5, 5, 6, 8, 7, 6, 5, 6, 13, 13,

														5, 5, 6, 8, 7, 6, 5, 3, 13, 13,

														2, 2, 3, 5, 3, 5, 6, 3, 2, 1,

														6, 6, 5, 6, 5, 3, 6, 1,

														13, 8, 9, 10, 10, 9, 8, 10, 9, 8, 6,

														13, 6, 8, 9, 9, 8, 6, 9, 8, 6, 5,

														13, 2, 3, 5, 5, 3, 5, 5, 6, 8, 7, 6,

														6, 10, 9, 9, 8, 6, 5, 6, 8

					};

					int8_t time[] = {2, 4, 2, 2, 2, 2, 2, 8, 4, 4, //时间

													 2, 4, 2, 2, 2, 2, 2, 8, 4, 4,

													 2, 4, 2, 4, 2, 2, 4, 2, 2, 8,

													 2, 4, 2, 2, 2, 2, 2, 8, 4, 4,

													 2, 4, 2, 2, 2, 2, 2, 8, 4, 4,

													 2, 4, 2, 2, 2, 2, 2, 8, 4, 4,

													 2, 4, 2, 4, 2, 2, 4, 2, 2, 8,

													 2, 4, 2, 2, 2, 2, 2, 8,

													 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 8,

													 4, 2, 2, 2, 4, 2, 2, 2, 2, 2, 8,

													 4, 2, 2, 2, 4, 2, 2, 5, 2, 6, 2, 4,

													 2, 2, 2, 4, 2, 4, 2, 2, 12

					};
					int16_t i, e;

					for (i = 0; i < sizeof(music) / sizeof(music[0]); i++)
					{
									for (e = 0; e < ((int16_t)time[i]) * tone[music[i]] / 10; e++)
									{
													Sound((int32_t)tone[music[i]]);
									}
					}
				}
				
				else if(song_num == 2)
				{
					int16_t tone[]={247,262,294,330,349,392,440,494,523,587,659,698,784,880,988,1046,1000};
					//你笑起来真好看				
					int8_t music[]={
											5,10,10,5,5,9,9,16,8,8,8,9,10,5,5,16,//想去远方的山川，想去海边看海鸥
											6,8,8,6,5,10,10,16,9,8,8,6,9,16,//不管风雨有多少，有你就足够
											5,10,10,5,5,9,9,16,8,8,8,6,5,10,10,16,//喜欢看你的嘴角，喜欢看你的眉梢
											6,11,11,6,5,10,10,16,9,8,8,6,8,16,//白云挂在那蓝天，像你的微笑
											5,12,5,5,12,5,9,16,8,6,8,8,8,10,12,16,//你笑起来真好看，像春天的花一样！
											8,6,8,8,8,13,12,10,9,8,6,8,8,10,9,16,//把所有的烦恼，所有的忧愁，统统都吹散
											5,12,5,5,12,5,9,16,8,6,8,8,13,12,16,//你笑起来真好看，像夏天的阳光
											8,8,8,13,12,10,9,8,6,8,8,9,8,16,//整个世界全部的时光，美得像画卷。
											};
					
					int8_t time[]={
											4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,//想去远方的山川，想去海边看海鸥
											4,4,4,4,4,4,4,4,4,4,4,4,8,4,//不管风雨有多少，有你就足够
											4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,//喜欢看你的嘴角，喜欢看你的眉梢
											4,4,4,4,4,4,4,4,4,4,4,4,8,4,//白云挂在那蓝天，像你的微笑
											4,4,2,2,4,4,4,4,4,4,2,2,4,4,8,4,//你笑起来真好看，像春天的花一样！
											4,4,2,2,4,4,4,4,4,4,4,4,4,4,8,4,//把所有的烦恼，所有的忧愁，统统都吹散
											4,4,2,2,4,4,4,4,4,4,4,4,4,8,4,//你笑起来真好看，像夏天的阳光
											4,4,4,4,4,4,4,4,4,4,4,4,8,4,//整个世界全部的时光，美得像画卷。
											};					
					int16_t i, e;

					for (i = 0; i < sizeof(music) / sizeof(music[0]); i++)
					{
									for (e = 0; e < ((int16_t)time[i]) * tone[music[i]] / 10; e++)
									{
													Sound((int32_t)tone[music[i]]);
									}
					}										
				}			
				
				/*
				//生日快乐    
        // 0   1   2   3   4   5   6   7  低1  低2 低3 低4 低5 低6低7
				uc16 tone[] ={250,262,294,330,350,393,441,495,525,589,661,700,786,882,990}; //音调        
				u8 music[]={5,5,6,5,8,7,5,5,6,5,9,8,5,5,12,10,8,7,6,11,
											11,10,8,9,8,5,5,8,5,5,12,10,8,7,6,11,11,10,8,9,8    //乐谱音调
				};     
        u8 time[] ={2,4,4,4,4,8,2,4,4,4,4,8,2,4,4 ,4 ,2,8, 8, 2,
             					4 ,4 ,4,4,8,2,4,8,2,4,4 ,4 ,2,8,8,2 ,4 ,4 ,4, 4,8,8        //节拍时间
        }; 
				*/

}
